package com.hbase;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.client.HBaseAdmin;

import java.io.IOException;

/**
 * @Author：YuanHaHa
 * @Date：2024/7/5 22:01
 */
public class TableExist {
    // 声明 Hbase 配置文件对象
    private static Configuration conf  = null;

    // 创建 Configuration 对象 并设置 连接zookeeper参数
    static {
        // 使用 HBaseConfiguration 的单例方法实例化
        conf = HBaseConfiguration.create();
        // 设置 HBase依赖的 zookeeper ip
        conf.set("hbase.zookeeper.quorum", "222.22.91.81");
        // 设置 zookeeper 端口
        conf.set("hbase.zookeeper.property.clientPort", "2181");
    }

    /**
     * 获取 HBaseConfiguration 对象
     * @return  HBaseConfiguration 对象
     */
    public static Configuration getHBaseConfiguration(){
        return conf;
    }

    /**
     * 获取 HBaseAdmin 对象
     * @return HBaseAdmin 对象
     * @Excepation IOException
     */
    public static HBaseAdmin getHBaseAdmin() throws IOException {

        // 在 Hbase 中 管理 访问表 需要先创建 HBaseAdmin 表
        // 1.获取 配置文件对象
        Configuration conf = getHBaseConfiguration();
        // 2.创建 连接对象
        Connection connection = ConnectionFactory.createConnection(conf);
        // 3.使用 Connection 对象创建 HBaseAdmin
        HBaseAdmin admin = (HBaseAdmin) connection.getAdmin();

        return  admin;
    }

    public static void main(String[] args) throws IOException {

        String tableName = "dog";
        HBaseAdmin admin = getHBaseAdmin();
        // 获取所有的表的信息
        TableName[] tableNames = admin.listTableNames();
        // 打印所有表名
        for (TableName name : tableNames) {
            System.out.println(name.getNameAsString());
        }
        // 判断某个表是否存在
        System.out.println("dog 表是否存在 " + (admin.tableExists("dog") ? "存在" : "不存在"));

        if(admin.tableExists("Person")){
            System.out.println("Person 表存在");
        }else{
            System.out.println("Person 表不存在");
        }
    }

}
